# 编译器设置
CXX := arm-linux-g++
CXXFLAGS := -Wall -Wextra -std=c++14 -pthread  # 添加 -pthread

# 目录设置
SRC_DIR := src
INC_DIR := inc
BUILD_DIR := build
TARGET := demo

# 源文件和对象文件
SRCS := $(wildcard $(SRC_DIR)/*.cpp)
OBJS := $(SRCS:$(SRC_DIR)/%.cpp=$(BUILD_DIR)/%.o)

# 头文件路径
INCLUDES := -I$(INC_DIR)

# 默认目标
all: $(BUILD_DIR) $(TARGET)

# 创建build目录
$(BUILD_DIR):
	mkdir -p $(BUILD_DIR)

# 链接目标文件生成可执行文件
$(TARGET): $(OBJS)
	$(CXX) $(OBJS) -o $@ -pthread

# 编译源文件到对象文件
$(BUILD_DIR)/%.o: $(SRC_DIR)/%.cpp
	$(CXX) $(CXXFLAGS) $(INCLUDES) -c $< -o $@

# 清理生成的文件
clean:
	rm -rf $(BUILD_DIR) $(TARGET)

# 重新编译
rebuild: clean all

# 伪目标
.PHONY: all clean rebuild